\section{Introduction}

\subsection{What is a RTS}

Real Time Strategy
games\footnote{\url{http://en.wikipedia.org/wiki/Real-time_strategy}} are a kind
of computer wargames which do not progress incrementally in turns, time passes
continuously.

RTS are games, therefore the aim is to win, achieving strategic and tactical
objectives. That means long and short term objectives, respectively. Usually
there are military objectives and the most common examples are economic and
combat management.

Typical actions that we can fulfill during the RTS game are, for example: guide
units to secure areas of the map, destroy the opponents units (shown in
\autoref{fig:battleScreenshot1} and \autoref{fig:battleScreenshot2}), create
additional units and structures during the course of a game (shown in
\autoref{fig:buildingScreenshot}), or cooperate with other players.

\begin{figure}[htp]
	\begin{center}
		\includegraphics[width=10cm]{images/battleScreenshot1.png}
	\end{center}
	\caption{Screenshot of a battle in the SpringRTS platform}
	\label{fig:battleScreenshot1}
\end{figure}

\begin{figure}[htp]
	\begin{center}
		\includegraphics[width=10cm]{images/battleScreenshot2.png}
	\end{center}
	\caption{Screenshot of battle in the SpringRTS platform}
	\label{fig:battleScreenshot2}
\end{figure}

\begin{figure}[htp]
	\begin{center}
		\includegraphics[width=10cm]{images/buildingScreenshot.png}		
	\end{center}
	\caption{Screenshot of a robot building a laboratory in the SpringRTS
	platform}
	\label{fig:buildingScreenshot}
\end{figure}

It is important to be clear that {\it City-building games}, {\it Construction
and management simulations} or {\it Real-time Tactics games} are not RTS games,
because these are not wargames and/or the aim of these games are not to achieve
long term objectives.


\subsection{Justification for choosing an RTS}
Our intention when choosing a Real Time Strategy System is to use it as the best
available research platform for multi-agent systems. There are several reasons
that justify this election, here are some of them:
\begin{enumerate}
	\item {\bf They provide a controlled testbed}. In RTS games, the environment
		is a synthetic one provided by the RTS platform. In that environment, is
		up to the researcher how to control randomness, uncertain information,
		physics behaviour, communication channels, etc. This ``playing God''
		style of research allows to test new solutions and proposals without the
		constraints of a real environment.
	\item {\bf It is an environment where adversarial and cooperative behaviours
		can be tested}. In RTS the game dynamics revolve around the idea of
		defeating the opponent side. It can be done individually or in a team.
		Thus RTS are the natural playground to test cooperation between agents
		but also competitive relationships, allowing the research of complex
		reasonings like opponent modelling and reasoning with uncertainty. 
	\item {\bf It can mimic real scenarios like in Serious Games} This will be
		discussed in Section \ref{sec:SeriousGames} but we will provide a brief
		sketch here. The ``war'' and ``units'' depicted in RTS are only a
		metaphor of an interesting scenario for engaging players into the game.
		But this metaphor can be expanded to real or useful scenarios, like for
		instance, fire fighting. Here enemy units, can depict fires and friendly
		units the fire extinguisher resources, like fire men, pumps, etc.
	\item {\bf The results can be used directly in video games}. RTS are video
		games and thus obtained results can be used straightforwardly in commercial
		video games. The video game industry is now a days greater than the
		cinema industry but paradoxically the AI in games is currently
		underdeveloped. Putting research results in games can move them beyond
		the actual state machines used in most games to new levels and
		conversely this revenue could help the advancement of the AI research. 
	\item {\bf Full range of AI techniques to explore}. Complex behaviours,
		planning and organizational schemes can be explored to accomplish the
		given goal. RTS pose a real problem to be solved by cutting edge
		techniques.
	\item {\bf Games are fun!!!} Research is a social endeavour, putting some
		fun in it will boost the research results. For instance, game
		competitions are now a days the best place to exchange ideas and
		techniques and to have a controlled environment to test your ideas
		against brilliant minds from all over the world.
\end{enumerate}
In summary, we believe that in the same way like chess was the \emph{drosophila} of
classical Artificial Intelligence, Real Time Strategy systems could become the
\emph{drosophila} of Multi-Agent Systems. 

\subsection{Brief comparison of different RTS platforms}
RTS is a type of game that have many different versions. But many of them are
 games that are just commercial and are not interesting for us because of they are
 not AI developing friendly. For this reason in this report we are not going to talk
about all the different games, we will center in the more useful for our investigation.
\begin{itemize}
\item {\it Wargus}\footnote{\url{http://wargus.sourceforge.net/}} is an open-source clone of 
the RTS game Warcraft II. This game is a good example on how RTS games are a good way to
explore and investigate different areas of the AI field, it is easy to find
research papers related to environment discovery or plan recognition and many other fields.
\item {\textbf Bos Wars}\footnote{\url{http://www.boswars.org}} is a futuristic real time strategy
 game (RTS). It is also an open source game. In this RTS game, the player has to combat enemies while developing his war economy. Some years ago an engine called Stratagus\footnote{\url{http://en.wikipedia.org/wiki/Stratagus}} was
one of hte most common engines and the most used in AI investigation related to games. But now
developers of Stratagus engine works in the Bos Wars project.
\item {\textbf Starcraft}\footnote{\url{http://us.blizzard.com/en-us/games/sc/}}
	is a well known comercial game which has a vast numbers of users. This game
	was released on 1998, and until this days it has a good health and is in very
	good consideration. Starcraft has been considered as the game that has
	raised the level of the quality of RTS. It's multi-player part is so
	important that in South Korea there is a professional league. 
	StarCraft has an AI Competition\footnote{\url{http://eis.ucsc.edu/StarCraftAICompetition}} that will
	be held from 10.1.2010 to 10.15.2010. For this competition is encouraged the
	submission of bots that make use of advanced AI techniques like planning, data
	Mining, machine learning, case-Based Reasoning...  This competition is for the
	expansion pack Broodwar that enables the development of custom AI for StarCraft.
	A C++ interface enables developers to query the current state of the game and
	issue orders to units. 
\item {\textbf ORTS}\footnote{\url{http://www.cs.ualberta.ca/~mburo/orts/}} is a
	programming environment for RTS games and since 2006 it has been developed
	to be interesting to players and to AI developers, it is not as common as
	Starcraft is but it has an important group of users. It is a free Software
	(GPL) and it is community maintained. Even it is said that it is
	multi-platform, it works better with Linux (but it is remarkable that other
	versions are under development). 
\item {\textbf SpringRTS}\footnote{\url{http://springrts.com/}} is an engine
	that support different games, initially it was created as a 3D version of
	the game Total Annihilation but now a days there are many different games
	with many thematics that rely on this engine. SpringRTS has the option to
	integrate skirmish AI, create multi player games, create maps, etc. 
\end{itemize}

Although ORTS and Starcaft have an AI competition, we finally decided not to work with any of them.
{\textbf Starcraft} was discarded because it was not a free software and also because it is not available for all
 the platforms. And even {\textbf ORTS} is free we had the same problem as with
 Starcraft, it was not functional with all the platforms. For this reason we
 discarded it too.

After some time of probing we finally decided to use {\textbf SpringRTS}.



 
